package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc EvaTepCyclePlanDto
 * @使用场景
 */
@Data
public class EvaTepCyclePlanDto extends BaseDto implements Serializable {

    /**
     * 定时执行周期安排ID:
     */
    @ApiModelProperty("定时执行周期安排ID")
    private String timerEvaCyclePlanId;

    /**
     * 目标周期ID:
     */
    @ApiModelProperty("目标周期ID")
    private String targetCycleId;

    /**
     * 周期开始时间:
     */
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间:
     */
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;
/**
     * 安排周期ID 
     */
    @ApiModelProperty("安排周期ID")
    private String	 planCycleId;

    /**
     * 被评对象目标周期ID 
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String	 evaObjTargetCycleId;

    /**
     * 周期ID 
     */
    @ApiModelProperty("周期ID")
    private String	 cycleId;

    /**
     * 周期名称 
     */
    @ApiModelProperty("周期名称")
    private String	 cycleStandardName;

    /**
     * 周期类型实例简称 
     */
    @ApiModelProperty("周期类型实例简称")
    private String	 cycleNumberShortName;

    /**
     * 周期类型标识 FIVE_YEAR:五年 THREE_YEAR:三年 YEAR:年 HALF_YEAR:半年 QUARTER:季度 DOUBLE_MOONS:双月 MONTH:月 SCHOOL_YEAR:学年 IRREGULAR_CYCLE:不规则周期
     */
    @ApiModelProperty("周期类型标识")
    private String	 cycleTypeCode;

    /**
     * 是否要求周期安排 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否要求周期安排")
    private String	 isReqCycleRange;

    /**
     * 排序 
     */
    @ApiModelProperty("排序")
    private Long	 orderNumber;

    @Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      EvaTepCyclePlanDto that = (EvaTepCyclePlanDto) o;
      return  timerEvaCyclePlanId == that.timerEvaCyclePlanId&&targetCycleId == that.targetCycleId&&cycleStartTime == that.cycleStartTime&&cycleEndTime == that.cycleEndTime&&planCycleId == that.planCycleId&&evaObjTargetCycleId == that.evaObjTargetCycleId&&cycleId == that.cycleId&&cycleStandardName == that.cycleStandardName&&cycleNumberShortName == that.cycleNumberShortName&&cycleTypeCode == that.cycleTypeCode&&isReqCycleRange == that.isReqCycleRange&&orderNumber == that.orderNumber;
    }

    @Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), timerEvaCyclePlanId,targetCycleId,cycleStartTime,cycleEndTime,planCycleId,evaObjTargetCycleId,cycleId,cycleStandardName,cycleNumberShortName,cycleTypeCode,isReqCycleRange,orderNumber);
    }

}
